package org.grottarossa.tms.ui.console;



import java.util.ResourceBundle;

import org.grottarossa.template.drivers.DriverException;
import org.grottarossa.ui.core.ApplicationSession;

/**
 * <p>Classe base per gestire l'interazione con un tipo specifico di {@link ConsoleView view}</p>
 * @author 
 *
 * @param <TView> Il tipo specifico (o base) di {@link ConsoleView view} con cui pu� interagire questo {@link ConsolePresenter}.
 */
public abstract class ConsolePresenter<TView extends ConsoleView>
{
	//localizer comune a tutti i presenter
	private ResourceBundle m_localizer;

	private TView view;
	protected String applicationName;
	protected ApplicationSession m_appSession;

	public void initialize(ApplicationSession appSession) throws DriverException
	{
		m_appSession = appSession;
		customInitialize();
	}

	protected abstract void customInitialize() throws DriverException;

	/**
	 * Imposta il riferimento al localizer comune dei {@link ConsolePresenter}
	 * @param localizer
	 */
	public void setCommonLocalizer(ResourceBundle localizer) {
		this.m_localizer = localizer;
	}

	/**
	 * @return restituisce il localizer comune dei {@link ConsolePresenter}
	 */
	protected ResourceBundle getCommonLocalizer() {
		return m_localizer;
	}

	/**
	 * Imposta la view associata a questo presenter
	 * @param view
	 */
	public void setView(TView view) {
		this.view = view;
	}

	/**
	 * @return la view associata a questo presenter
	 */
	protected TView getView() {
		return view;
	}

	public void setApplicationName(String appName) {
		this.applicationName = appName;

	}
}
